Кто-то на гиттер канале просил год назад, чтобы ему Сигму закодировали в чистых
функциях. Я тогда не смог это сделать, но вот недавно формировал домашки и
решил поставить такое задание в качестве домашки. Мне вроде говорили, что
Альтенкирх где-то писал что это невозможно или по крайней мере это не обладает
достаточно хорошими вычислительными характеристиками.
В тестах создание тапла (nat, list nat) = (5, [0,0,0,0,0]) и взятие у него
первой и второй проекции:
Трюк заключается в протаскивании первого элемента в базу, все равно конструктор
один и он же принимает его. Т.е. классическое индуктивное определение
сменяется на следующее:
Наверно проблемы начнутся как с pred, когда придется закодировать N-тапл из сигм
и переносить все кроме последнего в базу, но тоже вроде все законно.
Единственное к чему тут можно предъявить претензии — это дополнительный
параметр пустышка #Nat/Zero который передается в примерах в качестве (x:A) при
вызове элиминаторов, он нужен для совместимости типов, но как видно из примера,
экстрактятся из сконструированного тапла #Sigma/Intro настоящие значения (fst
test = 5 и snd test = [0,0,0,0,0]). Другими словами это означает что первый
элемент типовой пары должен быть как минимум стягиваемым пространством, что в
принципе в духе Сигмы и квантора существования.
P.S. Модель в cubicaltt, для тех, кто не доверяет Ом.
Полная модель с бета и эта правилами закодированная Дмитрием Митиным:
Тут мне подсказывают, что писал Thorsten Altenkirch:
Ok, when we think of homogenous tuples AxA then this can also be understood as
a function 2 -> A. This also works for heterogenous tuples like AxB using
dependent functions Pi x:2.if x then A else B. However the next logical step is
Sigma x:A.B x, which have no good representations as functions (unless we
accept very dependent functions which in my mind goes against the spirit of
type theory). For this reason it seems to me that the generalisation from -> to
Pi and from x to Sigma is the primary one, and the fact that tuples can be
represented as functions is secondary.
Позволю себе не согласиться с Торстеном,Альтенкирхом: на мой взгляд, именно
Черч кодировка и показывает скрытую категорную стркутуру теории типов (что
подтвердил PTS проект Cedile) обнажая ее самантику, она ни как не может
идти в разрез духа тетории типов, которым как раз и является теория категорий.